package com.itianyu.blog.dao.interfaces;

import java.io.Serializable;
import java.util.List;

import com.itianyu.blog.dao.beans.Entry;
import com.itianyu.blog.dao.beans.Page;
import com.itianyu.blog.dao.beans.User;

/**
 * 博文接口
 * @author wumgji
 */
public interface EntryInterface extends Serializable {

	/**
	 * 创建博文实体
	 * @return
	 */
	public Entry createEntry();

	/**
	 * 保存博文信息
	 * @param entry 博文实体
	 * @return
	 */
	public Entry saveEntry(Entry entry);

	/**
	 * 根据博文ID删除博文信息
	 * @param entryId 博文ID
	 */
	public void deleteEntry(int entryId);

	/**
	 * 根据博文ID查询博文信息
	 * @param entryId 博文ID
	 * @return
	 */
	public Entry findEntry(int entryId);

	/**
	 * 根据发布状态查询博文列表
	 * @param page 当前页数
	 * @param maxresults 每页查询最大数
	 * @param published 发布状态
	 * @return
	 */
	public List<Entry> findEntryEntities(int page, int maxresults, boolean published);
   
	
	/**
	 * 根据发布状态计算博文列表的总数
	 * @param published 发布状态
	 * @return
	 */
	public int getEntryEntitiesCount(boolean published);

	/**
	 * 根据标签查询已发布博文列表
	 * @param page 当前页数
	 * @param maxresults 每页查询最大数
	 * @param tagId 标签ID
	 * @return
	 */
	public List<Entry> findEntryEntitiesByTag(int page, int maxresults, int tagId);

	/**
	 * 根据标签计算已发布博文列表的总数
	 * @param tagId 标签ID
	 * @return
	 */
	public int getEntryEntitiesCountByTag(int tagId);

	/**
	 * 查询已发布的归档博文列表
	 * @return
	 */
	public List<String[]> findArchivesEntries();

	/**
	 * 根据日期查询已发布博文列表
	 * @param page 当前页数
	 * @param maxresults 每页查询最大数
	 * @param year 年
	 * @param month 月
	 * @return
	 */
	public List<Entry> findEntryEntitiesByDate(int page, int maxresults, int year, int month);

	/**
	 * 根据日期计算已发布博文列表的总数
	 * @param year 年
	 * @param month 月
	 * @return
	 */
	public int getEntryEntitiesCountByDate(int year, int month);
    
	/**
	 * 查询博文列表
	 * @return
	 */
	public List<Entry> findEntryPageEntities(User user);
}
